package Year22_Month04.day10;

public class 有序数组的平方 {
    public int[] sortedSquares(int[] nums) {
        int left = 0;//定义左指针
        int right = nums.length - 1;//定义右指针
        //处理数组中的平方项
        for (int i = 0; i < nums.length; i++) {
            nums[i] = nums[i] * nums[i];
        }
        //用一个新的数组来接收顺序大小的值
        int[] arr = new int[nums.length];
        //要求非递减，所以index是从后往前走
        int index = nums.length - 1;
        while(index >= 0 && left <= right){
            //如果左指针下标对应值的大于右指针下标对应的值，那就把大的值赋值给新数组的index下标
            if(nums[left] > nums[right]){
                arr[index] = nums[left];
                left++;
            }else{//这里注意了，除了右指针大于左指针的下标外还有等于，他和上面的 left == right联合起来处理left和right下标相同的情况
                arr[index] = nums[right];
                right--;
            }
            index--;
        }
        return arr;
    }
}
